#ifndef __BASE_SUBSYSTEM__H
#define __BASE_SUBSYSTEM__H

#include <ApplicationStartingNotification.h>

class BaseSubsystem
	:public Poco::Util::Subsystem
{
public:
	BaseSubsystem(void);
	virtual ~BaseSubsystem(void);
	virtual void initialize(Poco::Util::Application& app) ;
	/// Initializes the subsystem.

	virtual void uninitialize() ;


	void handleApplicationStart(const Poco::AutoPtr<ApplicationStartingNotification>& aNotification);

	virtual void OnStart(Poco::Util::Application& app) = 0;
	virtual void OnStop() = 0;

};

#endif